package com.starry.module.system.core.code.service;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.module.system.api.code.domain.qo.CodeRuleConfigPageQo;
import com.starry.module.system.api.code.domain.qo.CodeRuleConfigQo;
import com.starry.module.system.api.code.domain.vo.CodeRuleConfigDtlVo;
import com.starry.module.system.api.code.domain.vo.CodeRuleConfigVo;

import java.util.Set;

/**
 * 编码规则配置-服务
 * @author xiaoke
 */
public interface CodeRuleConfigService {

    /**
     * 分页查询所有数据
     *
     * @param pageQo 查询实体
     * @return 所有数据
     */
    PageVo<CodeRuleConfigVo> page(CodeRuleConfigPageQo pageQo);

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    CodeRuleConfigDtlVo getById(Long id);

    /**
     * 新增数据
     *
     * @param codeRuleConfigQo 实体对象
     * @return 新增结果
     */
    Long save(CodeRuleConfigQo codeRuleConfigQo);

    /**
     * 修改数据
     *
     * @param codeRuleConfigQo 实体对象
     */
    void updateById(CodeRuleConfigQo codeRuleConfigQo);

    /**
     * 删除数据
     *
     * @param idList 主键集合
     */
    void removeByIds(Set<Long> idList);


    /**
     * 生成编码
     * @param ruleKey 规则key
     * @return 编码
     */
    String generatedCode(String ruleKey);
}

